package io.adrainty.bolee.security.repository;

import com.baomidou.mybatisplus.core.metadata.IPage;
import io.adrainty.bolee.security.models.entity.ResourceEntity;

import java.util.List;

/**
 * @author AdRainty
 * @version V1.0.0
 * @since 2025/8/9 下午11:33
 */
public interface IResourceRepository {

    /**
     * 按照用户查找资源
     * @param userId 用户ID
     * @return 资源列表
     */
    List<ResourceEntity> findResourceByUserId(Long userId);

    /**
     * 获取系统资源列表
     * @return 资源列表
     */
    List<ResourceEntity> getMenuResourceList();

    /**
     * 按照角色查找资源
     * @param roleIdList 角色ID列表
     * @return 资源列表
     */
    List<ResourceEntity> findResourceByRoleIds(List<Long> roleIdList);

    /**
     * 获取子资源列表
     * @param parentResourceNo 父级资源编号
     * @return 子资源列表
     */
    List<ResourceEntity> findSubResourceList(String parentResourceNo);

    /**
     * 获取菜单资源列表
     * @return 菜单资源列表
     */
    IPage<ResourceEntity> findResourcePage(ResourceEntity resourceEntity, Integer pageNum, Integer pageSize);

    /**
     * 创建资源
     * @param resourceEntity 资源信息
     * @return 是否成功
     */
    boolean createResource(ResourceEntity resourceEntity);

    /**
     * 修改资源
     * @param resourceEntity 菜单资源信息
     * @return 是否成功
     */
    Boolean updateResource(ResourceEntity resourceEntity);

    /**
     * 查询资源列表
     * @param resourceEntity 资源信息
     * @return 资源列表
     */
    List<ResourceEntity> listResource(ResourceEntity resourceEntity);

    /**
     * 查询子级资源列表
     * @param parentResourceNo 父级资源编号
     * @return 子级资源列表
     */
    List<ResourceEntity> findSubLevel1ResourceList(String parentResourceNo);
}
